package framework;

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JPanel;

/**
 * This is the interface for the client-defined visualizer plugin. This contains
 * a specific client-defined method that visualizes each cell according to its
 * state. Note that cell state is implemented as int. This interface must be
 * implemented by the client.
 * 
 */

public interface VisualizerPluginInterface {
	/**
	 * Given a panel and a state, this method draws the visualization of the
	 * cell on the panel window.
	 * 
	 * @param JPanel pane - the pane on which the cell is drawn
	 * @param int state - the cell's state
	 */
	public void drawCell(JPanel pane, int state);

	/**
	 * Returns dimensions of cell visualization
	 * 
	 * @return Dimension d - the preferred dimension of the cell
	 */
	public Dimension getPreferredDimension();

	/**
	 * Returns array of all colors that represent all possible states of a cell.
	 * 
	 * @return Color[] colors - all the colors corresponding to each states
	 */
	public Color[] getStateColors();
}
